package com.shujia.wyh;
import com.shujia.wyh.utils.MysqlTool;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import java.util.UUID;

/*
    登录注册案例，加入数据库版本
        我们经过不断地测试发现一个问题：如果我们是先进行sql拼接，然后再对sql整体做编译的话，会将一些拼接的内容作为sql语法关键字进行处理
        但是我们实际上输入的字符就是普通的字符串，不应该当作sql语法的编译。

        于是java和mysql团队发现了这个bug(sql注入的问题)，于是提供了另一种方式获取数据库操作对象。
        解决方案：将原来的先拼接再编译sql的步骤换成：先编译再拼接。

 */
public class JDBCTest5 {
    public static void main(String[] args) throws Exception {
        //创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        System.out.println("====================欢迎来到吴涛婚恋介绍所====================");
        System.out.println("请输入您的用户名：");
        String username = sc.nextLine();
        System.out.println("请输入您的密码：");
        String pwd = sc.nextLine();

        //查询数据库中的users表，判断该用户是否存在
        //获取数据库的连接对象
        Connection conn = MysqlTool.getConnection();
        //获取数据库操作对象
//        Statement state = conn.createStatement();
//        //编写查询sql
//        String sql = "select name,password from users where name='"+username+"' and password='"+pwd+"'";
        //select name,password from users where name='陈涛' and password='123' or '1'='1'
//        System.out.println(sql);


        //提供了预编译对象进行处理
        //提前编译好sql，将需要传参数的地方使用问好进行处理
        PreparedStatement state = conn.prepareStatement("select name,password from users where name=? and password=?");
        state.setString(1,username);
        state.setString(2,pwd);

        //执行sql语句
        ResultSet resultSet = state.executeQuery();
        boolean flag = resultSet.next();
        if(flag){
            System.out.println("登录成功！！祝您婚姻幸福！！");
        }else {
            //如果该用户不存在，就注册一个用户
            System.out.println("请问是否要进行注册：（Y/N）");
            String s = sc.nextLine();
            if("Y".equals(s)){
                System.out.println("请输入您的昵称：");
                String name2 = sc.nextLine();
                System.out.println("请输入您的密码：");
                String pwd2 = sc.nextLine();
                System.out.println("请确认您输入的密码：");
                String pwd3 = sc.nextLine();
                if(pwd2.equals(pwd3)){
                    //进行注册，向数据库中添加数据
                    //java提供了一个类随机生成一个编号
                    //UUID
                    UUID uuid = UUID.randomUUID();
                    String id = uuid.toString();
                    String sql2 = "insert into users values('"+id+"','"+name2+"','"+pwd2+"')";
                    System.out.println(sql2);
                    int count = state.executeUpdate(sql2);
                    if(count==1){
                        System.out.println("用户注册成功！！");
                    }else {
                        System.out.println("用户注册失败！！");
                    }
                }
            }else {
                System.out.println("再见！");
            }
        }


        conn.close();

    }
}
